package com.zengjianjun.oss.platform;

import com.zengjianjun.oss.platform.param.FileListParam;
import com.zengjianjun.oss.platform.result.FileListResult;

import java.io.File;
import java.util.List;

/**
 * @author zengjianjun
 */
public interface IOssClient {

    /**
     * 获取当前页的文件列表
     *
     * @return 文件列表数据
     */
    List<FileListResult> getFileList(FileListParam param);

    /**
     * 获取指定文件信息
     *
     * @return 文件信息
     */
    FileListResult getFile(String bucketName, String fileKey);

    /**
     * 获取完整的文件列表
     *
     * @return 文件列表数据
     */
    List<FileListResult> getFullFileList(FileListParam param);

    /**
     * 下载文件到本地路径
     *
     * @param bucketName 桶名称
     * @param fileKey    文件标识
     * @param filePath   完整路径
     */
    void download(String bucketName, String fileKey, String filePath);

    /**
     * 文件上传
     *
     * @param bucketName    桶名称
     * @param fileKey       文件标识(上传的目标路径，不包含桶名称)
     * @param filePath      本地文件路径
     */
    void upload(String bucketName, String fileKey, String filePath);

    /**
     * 文件上传
     *
     * @param bucketName    桶名称
     * @param fileKey       文件标识(上传的目标路径，不包含桶名称)
     * @param file      本地文件路径
     */
    void upload(String bucketName, String fileKey, File file);

    /**
     * 文件上传
     *
     * @param bucketName    桶名称
     * @param fileKey       文件标识(上传的目标路径，不包含桶名称)
     */
    void delete(String bucketName, String fileKey);
}
